package net.dgg.dggcloud.service.jrcrm.dao.orf;

import net.dgg.dggcloud.core.minidao.annotation.MiniDao;
import net.dgg.dggcloud.core.minidao.hibernate.MiniDaoSupportHiber;
import net.dgg.dggcloud.service.jrcrm.entity.orf.Order;

import java.util.List;
import java.util.Map;

/**
 * @author 鲜林材
 * 订单
 * @create 2017-11-03 11:01
 **/
@MiniDao
@SuppressWarnings({"rawtypes"})
public interface OrderDao extends MiniDaoSupportHiber<Order> {

    /**
     * 根据map查询订单信息
     *
     * @param map
     * @return
     */
    public List<Map> queryOrderListByMap(Map map);


    /**
     * 保存订单信息
     *
     * @param order
     */
    public void saveOrder(Order order);

    /**
     * 通过客户id查询订单信息，新增时间降序
     *
     * @param map
     * @return
     */
    public List<Map> queryOrderListByCustomerIdByMap(Map map);


    /**
     * 选择订单列表
     * BusinessUserId  签单商务
     * keyword 客户名称，订单编号
     *
     * @param map
     * @return
     */
    public List<Map> listSelectOrderByMap(Map map);

    public List<Map> listReferralOrderByMap(Map map);
    /**
     * 选择订单列表
     * BusinessUserId  签单商务
     * keyword 客户名称，订单编号
     *
     * @param map
     * @return
     */
    public Integer countListSelectOrder(Map map);



    /**
     * 选择订单列表 退款
     * BusinessUserId  签单商务
     * keyword 客户名称，订单编号
     *
     * @param map
     * @return
     */
    public List<Map> listReimburseSelectOrder(Map map);

    /**
     * 选择订单列表  退款
     * BusinessUserId  签单商务
     * keyword 客户名称，订单编号
     *
     * @param map
     * @return
     */
    public Integer countReimburseSelectOrder(Map map);

    /**
     * 通过map查询订单相关信息分页
     *
     * @param paramMap
     * @return
     */
    List<Map> queryOrderListPageByMap(Map paramMap);

    /**
     * 查询分页总数通过map
     *
     * @param paramMap
     * @return
     */
    Integer countlistOrdersPageByMap(Map paramMap);

    /**
     * 通过map修改订单信息
     * @param map
     */
    public void updateOrderByMap(Map map);

    /**
     * 通过map查询预览订单信息
     * @param map
     * @return
     */
    List<Map> queryPreviewOrderByMap(Map map);

    /**
     * 通过客户id查询订单历史信息 <br/>
     * @param customerId
     * @return
     */
    List<Map> queryOrderHitoryByCustomerId(Long customerId);

    /**
     * 查询订单信息通过商机id和当前跟前人
     * @param businessMap
     * @return
     */
    List<Map> queryOrderByBusinessByMap(Map businessMap);

    /**
     * 查询待审核订单
     * @param paramMap
     * @return
     */
    List<Map> queryAuditOrderListPageByMap(Map paramMap);

    /**
     * 订单审核总数
     * @param paramMap
     * @return
     */
    public Integer countAuditOrderListPageByMap(Map paramMap);

    /**
     * 通过订单id删除订单信息
     * @param parameterMap
     *  传入orderId
     */
    public void deleteOrderByMap(Map parameterMap);

    /**
     * 通过商机id，商机跟进人查询处理中的订单状况
     * @param paramMap
     * @return
     */
    int queryInProcessOfOrderByMap(Map paramMap);
}
